import RxRequest_Base from './RxRequest_Base.js'

// 获取本地配置 - get缓存
RxRequest_Base.getLocalCache = () => {
  return new Promise((resolve, reject) => {
    post_get_cache().then((text) => {
      // alert('没有数据 text='+JSON.stringify(text || {}))
      /*
        text = {
          data: ___,
          success: true/false,
          message: ___
        }
       */
      let textObj = text
      if (text && typeof text === 'string') {
        try {
          textObj = JSON.parse(text) || {}
        } catch (error) {
          textObj = text
        }
      }

      if (textObj && typeof textObj == 'object') {
        // alert('数据 11 textObj obj str='+JSON.stringify(textObj || {}))
        // let url = ''
        // let ps = ''
        // let lastTime = '--'
        let tdata = textObj.data || {}
        const succ = textObj.success || false
        // const message = textObj.message || ''

        let result = {}
        if (succ) {
          if (tdata && typeof tdata === 'string') {
            tdata = JSON.parse(tdata)
          }
          result = tdata
        }
        resolve(result)
      } else {
        // alert('没有数据 22 textObj str=', JSON.stringify(textObj || {})
        reject('error')
      }
    }).catch(reject)
  })
}

// 保存本地配置 - save缓存
RxRequest_Base.saveLocalCache = (data = {}) => {
  return post_save_cache(data)
}

RxRequest_Base.cancel = () => {
  // 没有返回值
  return post_cancel()
}

RxRequest_Base.confirm = (data = {}) => {
  return post_confirm(data)
}

RxRequest_Base.saveConfirm = (data = {}) => {
  return new Promise((resolve, reject) => {
    post_save_cache(data).then(res => {
      post_confirm(data).then(resolve).catch(reject)
    }).catch(error => {
      console.log('confirm error=', error)
      reject(error)
    })
  })
}



export default RxRequest_Base



/**
 * 触动精灵 fetch 请求
 * 1. 获取设置缓存 `post` /load_file
 * 2. 保存设置缓存 `post` /save_file
 * 3. 运行脚本、取消运行 `post` /set_event
 * ---------------------

  ----- 【 以下注释是官方 api 】 ----

 [post] -> /load_file -获取缓存 -> 无参数
  接口返回 return {
    data: ___,
    success: true/false,
    message: ___
  }

  [post] -> /save_file - 保存缓存 - 参数 -> {
    name: '脚本配置名.dat',
    data: '{xx:xx}'
  }

  [post] -> /set_event - 取消运行 -  参数 -> {
    name: 'showUI_cancel',
  }

  [post] -> /set_event - 运行脚本 -  参数 -> {
    name: 'showUI_commit',
    data: '{xx:xx}'
  }
 *
*/

const ShowUIConfig = 'rxupdate_0.dat'

function baseRequestPostData(data) {
  // 处理 请求体，目前没有处理
  // -- 扩赞参数
  // -- 等等
  data = data || {}
  return data
}

// ----- 按钮点击 确认
function post_confirm(data) {
  const dataString = baseRequestPostData(data)
  console.log('点击 确认按钮 /set_event showUI_commit')
  return RxRequest_Base.requestPost(
    '/set_event', // postApi
    {
      name: 'showUI_commit',
      value: dataString
    }
  )
}

// ----- 按钮点击 取消
function post_cancel() {
  console.log('点击 取消按钮 /set_event showUI_cancel')
  return RxRequest_Base.requestPost(
    '/set_event',
    { name: 'showUI_cancel' }
  )
}

// --- 获取 缓存
function post_get_cache() {
  console.log('获取 缓存=> /load_file')
  // alert('获取 缓存 ShowUIConfig=' + ShowUIConfig)
  return RxRequest_Base.requestPost(
    '/load_file',
    { name: ShowUIConfig }
  )
}

// --- 保存 缓存
function post_save_cache(data) {
  const dataString = baseRequestPostData(data)
  console.log('保存 缓存=> /save_file')
  // alert('保存 缓存 ShowUIConfig=' + ShowUIConfig)
  return RxRequest_Base.requestPost(
    '/save_file',
    {
      name: ShowUIConfig,
      data: dataString
    }
  )
}